<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // 同质化：
    // const obj = {
    //     a:1,
    //     b:2,
    //     c:3,
    //     d:4
    // }
    // console.log(obj.a)
    // function fn(){
    //     console.log(obj.a);
    // }

    // 解构赋值
    {
        // 对象解构赋值基本语法
        // let obj = {a:1,b:2,c:3,d:4};
        // // 解构目标  = 解构源
        // // let {a} = obj;// 将obj对象下的a属性赋值给变量a，相当于let a = obj.a;
        // let {a,b,c,d} = obj;// 将obj对象下的a,b,c,d属性赋值给变量a,b,c,d
        // console.log(a,b,c,d);
    }
    // * 顺序不用一一对应
    // {
    //     let obj = {a:1,b:2,c:3};
    //     let {b,a,c} = obj;// 相当于 let {a,b,c}= obj;
    // }
    // * = 右侧可以是一个常或变量
    // {
    //     const obj = {a:1,b:2,c:3};
    //     let {b,a,c} = obj;// 相当于 let {a,b,c}= obj;
    //     console.log(a,b,c)
    // }
    // * 嵌套对象解构
    // {
    //     let obj = {
    //         username:"zhangsan",
    //         age:12,
    //         info:{
    //             num:100,
    //             a:1
    //         }
    //     };
    //     // info:{num}---->将obj.info进行解构赋值
    //     const {username,age,info:{num,a}} = obj;
    //     console.log(username,age,num,a);// zhangsan 12 100 1
    // }

    // * 可忽略解构源的属性
    // {
    //     // 忽略了解构源的c属性.
    //     const {b,a} = {a:1,b:2,c:3};
    //     console.log(a,b);
    // }

    // * 剩余运算符
    // {
    //     const {a,b,...my} = {a:1,b:2,c:3,d:4};
    //     console.log(a,b,my);//1 2 {c:3,d:4}
    // }


    // * 不完全解构：变量名称在对象中不存在
    // {
    //     const {a,b,my} = {a:1,b:2,c:3,d:4};
    //     console.log(a,b,my);//1 2 undefined
    // }

    // 解构默认值(常用)
    // {
    //     // my= 100------->如果解构源当中没有my,那么my的值为100
    //     const {a,b,my=100} = {a:1,b:2,c:3,d:4};
    //     console.log(a,b,my);//1 2 100
    // }

    // 为非同名局部变量赋值 ，可避免命名冲突
    // {
    //     const username = "wangwu";
    //     const obj = {
    //         age:12,
    //         username:"lisi"
    //     };
    //     const {age,username:my} = obj;
    //     console.log(username,age,my);// wangwu 12 lisi
    // }

    // 函数传参数
    // {
    //     let a = {
    //         num:100,
    //         username:"lisi"
    //     };
    //     function fn({num,username}){
    //         console.log(num,username);// 100
    //         return {
    //             a:1,
    //             b:2,
    //             c:3
    //         }
    //     }
    //     const {a:aa,b,c} = fn(a);
    // }

    let a = 1;
    let b = 2;

    a = a+b;
    console.log(a,b);// 2 1
</script>

</html>